10. 使用在线资源

获取所需信息

成为一名熟练的程序员需要具备丰富的知识,包括掌握库、语法以及注意各种其他细节。更具挑战性的是,随着新技术和新工具的不断出现,整个技术格局也在一直发生变化。

对于一个新程序员来说,学习所有这些细节和跟上新的发展步伐似乎是一个不可能完成的任务。确实如此!实际上哪怕是经验丰富的专家级程序员也无法把百科全书中的知识装入大脑。但是他们掌握了快速查找信息的方法。

如何搜索

以下是一些有用的网页搜索技巧:

  • 尝试使用 "Python" 或正在使用的库的名称作为查询的第一个关键词。这会提示搜索引擎优先考虑与你所使用工具明确相关的结果。
  • 可以多次尝试搜索,如果第一次搜索时未查找到有用的结果,请重试。
  • 尝试使用初次搜索时在页面上找到的关键词,以便于后续搜索时,引导搜索引擎给出关联度更高的结果。
  • 复制并粘贴错误消息,将其作为搜索关键词,这会找到错误解释和导致错误的原因。错误消息中可能还包含代码的特定行号。但在搜索时,仅使用行号前出现的错误消息部分即可。
  • 如果找不到问题的答案,请自己询问!像 Stackoverflow 这样的社区具有某些礼节规定,如果你想参与进去,就必须学习这些礼节,但不要让这些礼节影响大家对资源的使用。

练习:最佳搜索词

假如你在写代码时遇到以下错误信息:

UnboundLocalError: local variable 'egg_count' referenced before assignment

用下面哪一个选项搜索,最有可能得出有用结果?

SOLUTION: Python UnboundLocalError: local variable(Python UnboundLocalError:局部变量)

在线资源

虽然关于编程的在线资源数不胜数,但并不是所有资源都一样可靠。在下面我们按可靠性为你列出了一些资源:

  1. ** Python 教程 ** - 这部分官方文档涉及 Python 语法和标准库的相关研究。文档中包含丰富的示例,并且的技术语言比主文档更少。请确保你阅读的是 Python3 对应的文档版本!
  2. ** Python 语言和库引用 ** - 相对于 Python 教程而言,语言引用和库引用使用了更多技术性语言,但这才是最终的真理之源。随着你对 Python 越来越熟悉,你也应该开始充分利用这些资源。
  3. 第三方库文档 - 第三方库不仅会在自己的网站上发布文档,也会经常在 https://readthedocs.org/ 上发布。大家可以通过其文档的质量判断第三方库的质量。如果开发人员没有时间编写好的文档,那么他们可能也没有时间研究自己的库。
  4. 知名专家的网站和博客 - 之前的资源为主要资源,那些文档的作者都是代码编写人员。尽管主要资源相当可靠,但次要资源有时也极具价值。次要资源的缺点在于你需要确定来源的可信度。像 Doug Hellmann Eli Bendersky 都是非常优秀的开发人员。而一些不知名作者的博客可能极具价值,也可能毫无用处。
  5. Stackoverflow - 这个问答网站的访问量很大,所以有人可能提问过你想要问的问题,并得到了回答。然而,这些答案都由志愿者提供,因此质量也参差不齐。在参考答案中的代码之前,请务必了解相关解决方案。如果答案中没有任何解释,那么多半也并不可靠。你可以利用这个网站找到更多问题的解决方案或是搜索问题的关键词。
  6. ** Bug 跟踪器** - 有时你也会遇到一个非常罕见的或全新的问题,并且 Stackoverflow 上也没有人解决过这个问题。这时,你可能会在 GitHub 的错误报告中引用自己的错误。这些错误报告也许会有帮助,但为了解决这个问题,你还需要将之前的工作再重复一遍。
  7. 其它网络论坛 - 有时搜索引擎也会将你引导至一些古早的论坛,它们可能早在2004年之后就不再运作了。如果这些论坛是解决问题的唯一资源,你或许应该重新考虑问题的解决方案了。

练习:为学员提供帮助

QUESTION:

学习技能最好的方式之一是教导别人。你可以通过帮助其他学员理解代码中的错误来练习自己的调试和研究技能。设想一下,假如有一位学员在 Udacity 论坛 上发布了以下消息和代码。

请你给学员写一则消息,解释他们发现的错误,并帮助他们掌握如何解决问题。

嗨,我的代码出现了错误,但我不明白问题出在哪里?

我列出了自己的 Facebook 好友,想从列表中选择第四个好友。
这是我的代码:

friends["3"]

错误信息是:
TypeError: list indices must be integers or slices, not str (列表索引必须是整数或片段,而不是 str)

ANSWER:

感谢大家考虑如何帮助学员。与他人共享知识是提高编程能力的好方法!

我们为学员的问题提供以下答案:

同学你好!感谢分享你的问题 —— 记录问题是第一步,做得不错。
我在网上阅读并研究了你的错误信息。你的变量 friends 是指一个列表吗?如果要获取列表的元素,则需要使用索引的 整数 不是 一个字符串。("3" 是一个字符串,与整数 3 不同。)

通过研究,我们得出了结果

我们看不到学员代码的回溯或其余部分,但错误消息含有很多信息。
我在线搜索 "python TypeError: list indices must be integers or slices, not str",这会出现一些不同的结果,包括一些不相关的结果,这起初让我很困惑。慢慢地,在 Stackoverflow 和其他网站上阅读了几个不同的答案后,我了解这个问题的种类,并忽略了不相关的部分。

如果想要进行更多纠错练习,请随时回答真实学生参加此课程的相关问题。[浏览论坛,了解自己如何为他人提供帮助!]( https://discussions.youdaxue.com)。

课程总结